package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 短信管理实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("yunke_sms")
@Schema(name = "YunkeSms", description = "短信管理实体")
public class YunkeSms implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description = "短信ID")
    private Long id;

    @Schema(description = "手机号码")
    private String phoneNumber;

    @Schema(description = "短信内容")
    private String smsContent;

    @Schema(description = "短信类型（1验证码 2通知 3营销 4告警）")
    private Integer smsType;

    @Schema(description = "业务类型")
    private String businessType;

    @Schema(description = "模板编码")
    private String templateCode;

    @Schema(description = "模板参数（JSON格式）")
    private String templateParams;

    @Schema(description = "验证码")
    private String verifyCode;

    @Schema(description = "验证码有效期（分钟）")
    private Integer codeExpire;

    @Schema(description = "发送状态（0待发送 1发送中 2发送成功 3发送失败）")
    private Integer sendStatus;

    @Schema(description = "发送时间")
    private Long sendTime;

    @Schema(description = "发送结果")
    private String sendResult;

    @Schema(description = "供应商（1阿里云 2腾讯云 3华为云）")
    private Integer provider;

    @Schema(description = "供应商消息ID")
    private String providerMsgId;

    @Schema(description = "回执状态（0未回执 1成功 2失败）")
    private Integer receiptStatus;

    @Schema(description = "回执时间")
    private Long receiptTime;

    @Schema(description = "回执结果")
    private String receiptResult;

    @Schema(description = "费用（分）")
    private Integer cost;

    @Schema(description = "重试次数")
    private Integer retryCount;

    @Schema(description = "是否已验证（0否 1是）")
    private Boolean isVerified;

    @Schema(description = "验证时间")
    private Long verifyTime;

    @Schema(description = "发送用户ID")
    private Long sendUserId;

    @Schema(description = "客户端IP")
    private String clientIp;

    @Schema(description = "扩展信息（JSON格式）")
    private String extraInfo;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "状态（0正常 1删除）")
    private Integer status;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;
} 